package com.dz51.module.systemparameter.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import com.dz51.core.cache.IBaseCache;
import com.dz51.core.log4j.ILog4jManager;
import com.dz51.module.systemparameter.dao.ISystemParameterDao;
import com.dz51.module.systemparameter.pojo.SystemParameter;
import com.dz51.module.systemparameter.service.ISystemParameterService;

/**
 * @Title: SystemParameterServiceImpl.java
 * @Package com.dz51.module.systemparameter.service.impl
 * @Description: 系统参数service层实现
 * @author Zhaoqt
 * @date 2014-5-10 上午4:29:16
 * @version V1.0
 */
@Service(value = "com.dz51.module.systemparameter.service.impl.SystemParameterServiceImpl")
public class SystemParameterServiceImpl implements ISystemParameterService {

	@Resource(name = "com.dz51.module.systemparameter.dao.impl.SystemParameterDaoImpl")
	private ISystemParameterDao systemParameterDao;

	@Autowired
	private ILog4jManager log4jManager;

	@Autowired
	@Qualifier(value = "cacheFactory")
	private IBaseCache baseCache;

	/**
	 * 获取全部系统参数
	 * 
	 * @Title: getAllSystemParameter
	 * @return List<SystemParameter>
	 * @throws Exception
	 */
	public List<SystemParameter> getAllSystemParameter() throws Exception {
		return systemParameterDao.getAllSystemParameter();
	}

	/**
	 * 根据key获取指定系统参数
	 * 
	 * @Title: getSystemParameterByKey
	 * @param key
	 * @return SystemParameter
	 * @throws ExceptionSystemParameter
	 */
	public SystemParameter getSystemParameterByKey(String key) throws Exception {
		return systemParameterDao.getSystemParameterByKey(key);
	}

	/**
	 * key为null则同步全部
	 * 
	 * @Title: synSystemParameterCacheAll
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public boolean synSystemParameterCacheAll(String key) throws Exception {
		log4jManager.infoCustomLog(getClass().getName(), "synSystemParameterCacheAll", "syn SystemParameter ...");
		if (StringUtils.isNotBlank(key)) {
			SystemParameter systemParameter = systemParameterDao.getSystemParameterByKey(key);
			if (systemParameter != null) {
				baseCache.put(systemParameter.getSystemParameterName(), systemParameter.getSystemParameterValue());
			} else {
				log4jManager.infoCustomLog(getClass().getName(), "synSystemParameterCacheAll", "find SystemParameter key is null.");
				return false;
			}
		} else {
			List<SystemParameter> systemParameterList = systemParameterDao.getAllSystemParameter();
			for (SystemParameter systemParameter : systemParameterList) {
				baseCache.put(systemParameter.getSystemParameterName(), systemParameter.getSystemParameterValue());
			}
		}
		return true;
	}

}
